<?php
class TercerosController extends AppController{

    var $name = 'Terceros';
    var $appModule = 'Maestros';
    var $helpers = array('Html', 'Form', 'Number', 'Codigo','GetList', 'TextDate');
	
	function index() {
		$q = $this->getBusqueda($this->data['Banco']['busqueda']);
		$this->set('q', $q);
		$this->Tercero->recursive = -1;
		
		$conditions = array('Tercero.activo'=>true,'Tercero.empresa_id'=>$this->empresaId());
		if (!empty($q)){
			$conditions = array(
				'Tercero.activo'=>true,
				'Tercero.empresa_id'=>$this->empresaId(),
				'or'=>array(
					'Tercero.numero_documento SIMILAR TO'=>$q,
					'Tercero.apellido_paterno SIMILAR TO'=>"%$q%",
					'Tercero.apellido_materno SIMILAR TO'=>"%$q%",
					'Tercero.nombres SIMILAR TO'=>"%$q%"
				)
			);            	
		} 
		$this->paginate['Tercero'] = array(
			'conditions'=>$conditions,
			'order'=>array('Tercero.apellido_paterno'=>'asc')          
		);	        
		
		$this->set('terceros', $this->paginate('Tercero'));
		$this->set('limite', $this->limite);
	}
	function add() {
		if (!empty($this->data)) {
			$usuario = $this->Session->read('Usuario');
			$this->data['Tercero']['empresa_id'] = $this->empresaId(); // segun sesion
			$this->data['Tercero']['usuario_creacion_id'] = $this->usuarioId(); // segun sesion
			$this->data['Tercero']['fecha_creacion'] = 'now()';

			$this->Tercero->create();
			if ($this->Tercero->save($this->data)) {
				$this->Session->setFlash(__('El Tercero ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Tercero no ha podido se guardado. Intente nuevamente..', true));
			}
		}               

	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Tercero no existe', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
			$usuario = $this->Session->read('Usuario');
			$this->data['Tercero']['usuario_modificacion_id'] = $this->usuarioId(); // segun sesion
			$this->data['Tercero']['fecha_modificacion'] = 'now()';
			if ($this->Tercero->save($this->data)) {
				$this->Session->setFlash(__('El Tercero ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {			
				$this->Session->setFlash(__('El Tercero no ha podido se guardado. Intente nuevamente.', true));
			}
		}
		else {
			$this->data = $this->Tercero->read(null, $id);			
		}               
	}
	
	function delete($id = null, $verbose = true) {
                if (!$id) {
                    if ($verbose){
                        $this->Session->setFlash(__('Id de Persona invalido', true));
                        $this->redirect(array('action'=>'index'));
                    }
                    else return false;
                }
                $usuario = $this->Session->read('Usuario');
                $this->Tercero->recursive = -1;
                $data = $this->Tercero->read(null, $id);
                $data['Tercero']['activo']=0;
                $data['Tercero']['usuario_borrado_id']=$this->usuarioId();
                $data['Tercero']['fecha_borrado']='now()';

                if (!$this->Tercero->save($data) && !verbose)
                    return false;
                if ($verbose){
                    $this->Session->setFlash(__('Persona eliminada', true));
                    $this->redirect(array('action'=>'index'));
                }
                else return true;
	}

    function process(){// procesa anulaciones y eliminaciones en bloque
        $op = isset($this->params['form']['delete'])?'eliminar':'anular';
        $flag = true;
        $i = 0;
        foreach($this->data as $item){
            if ($item['id']!='0'){
                if(isset($this->params['form']['delete'])){ // eliminar
                    $flag = $this->delete($item['Tercero']['id'], false);
                }
                if (!$flag){
                    $data = $this->Tercero->read(null, $item['Tercero']['id']);
                    $this->Session->setFlash(__("Se ha producido un error al $op el Tercero #".$data['Tercero']['codigo'], true));
                    break;
                }
            }
            $i++;
        }
        if ($flag && $i > 0){
            $this->Session->setFlash(__("El proceso de $op Tercero se ha realizado con exito.", true));
        }
        $this->redirect(array('action'=>'index'));
    }
    
    function buscar($q = null){
        $result = '';
        //estableciendo parámetros de búsqueda
        if(!empty($this->params['url']['q'])){
            $q = $this->params['url']['q'];
        } elseif(!empty($this->params['form']['q'])) {
            $q = $this->params['form']['q'];
        } elseif(!empty($this->data['Tercero']['q'])){
            $q = $this->data['Tercero']['q'];
        }

        if(empty($q)){
            $result = array('error'=>'no ha establecido los parámetros correctamente');
        } else {
            $q = strtoupper($q);
			$q1 = implode('|',explode(' ', $q));			
			$this->Tercero->Behaviors->attach('Containable');
            $result = $this->Tercero->find('all',array(
                'conditions'=>array(
					'Tercero.activo'=>true,
                    'OR'=>array(
                        'Tercero.id'=>(int)$q,
                        "(Tercero.apellido_paterno || ' ' || Tercero.apellido_materno || ' ' || Tercero.nombres) SIMILAR TO '%$q1%'",
                        //"(Tercero.apellido_paterno || ' ' || Tercero.nombres) LIKE"=>"$q%",
                        //"(Tercero.nombres || ' ' || Tercero.apellido_paterno || ' ' || Tercero.apellido_materno) LIKE"=>"$q%",
                        'Tercero.numero_documento LIKE'=>"$q%",
                    )
                ),
                'limit'=>100,
				'contain'=>array(
					'TipoDocumento'=>array(
						'descripcion',
						'simbolo'
					)
				)
            ));
        }
		//die();
        //para peticiones de autocompletado
        $res = array();
        if(!empty($this->params['url']['autocomplete']) || !empty($this->params['form']['autocomplete'])){
            foreach($result as $value){
				$valor = $value['Tercero']['nombre_completo'];
                $res[] = array('value'=>$value['Tercero']['id'], 'display'=>'<span style="color:gray;font-size:.9em">'. $value['Tercero']['numero_documento'] .'</span><div style="float:right;font-size:.8em" title="'. $valor .'">'. $this->neat_trim($valor, 24) .'</div>');
            }
            $result = $res;
        }

        if ($this->RequestHandler->isAjax()){
			if(empty($result)){
				$result = '';
			}			
            $this->_ajaxify($result);
        } else {
            return $result;
        }
    }
}
?>